home *** CD-ROM | disk | FTP | other *** search
- #include <Stdio.h>
- #include <string.h>
- #include <exec/types.h>
-
- #define MAXXRES 2048
-
- FILE *e1=NULL,*e2=NULL,*s=NULL;
- UBYTE lb[MAXXRES * 3];
-
- void cleanup()
- {
- if(e1) fclose(e1);
- if(e2) fclose(e2);
- if(s) fclose(s);
- }
-
- void Erreur(char *msg)
- {
- printf("%s\n",msg);
- exit(15);
- }
-
- unsigned int fgetnum(FILE *f)
- {
- unsigned int a;
- a=fgetc(f)+(fgetc(f) << 8);
- if (feof(f))
- return (0xffff);
- else
- return (a);
- }
-
- void fputnum(unsigned int i)
- {
- fputc(i & 0xff,s);
- fputc((i >> 8) & 0xff,s);
- }
-
- main(c,v)
- int c;
- char *v[];
- {
- unsigned int xr,yr,h,l1,l2;
-
- puts("\n\t\t\t\t Merge V1.1 ");
- puts("\t\t\t\t© LF soft 1991");
- puts("\n\tMerge 2 fichier images au format QRT (DKBtrace,QRTtrace,...)\n");
-
- if(c!=4) Erreur ("Usage :Merge src1 src2 dst");
- atexit(cleanup);
-
- if(!(e1=fopen(v[1],"rb"))) Erreur ("Impossible d'ouvrir le 1er fichier");
- if(!(e2=fopen(v[2],"rb"))) Erreur ("Impossible d'ouvrir le 2nd fichier");
- if(!(s=fopen(v[3],"wb"))) Erreur ("Impossible d'ouvrir le 3em fichier");
-
- if(((xr=fgetc(e1))!=fgetc(e2)) || ((h=fgetc(e1))!=fgetc(e2)))
- Erreur ("Les 2 images sources n'ont pas la même largeur !");
- if((xr +=((unsigned int)h) << 8)>MAXXRES)
- Erreur ("Images trops larges !!");
- printf("Largeur = %d ,",xr);
- yr = fgetc(e1); l1 = fgetc(e2);
- h = fgetc(e1); l2 = fgetc(e2);
- if((yr +=((unsigned int)h) << 8)<(l1 +=((unsigned int)l2) << 8))
- yr = l1;
- printf(" Hauteur = %d\n",yr);
-
- /* On ecrit la taille */
- fputnum(xr);
- fputnum(yr);
-
- l1=fgetnum(e1);
- l2=fgetnum(e2);
-
- while (!(feof(e1) &&feof(e2))){
- #ifdef DEBUG
- printf("l1 =%d , l2=%d",l1,l2);
- #endif
- if (l1<l2){
- #ifdef DEBUG
- puts(" => l1");
- #endif
- fputnum(l1);
- fread(lb,1,xr*3,e1);
- l1=fgetnum(e1);
- } else if (l1==l2) {
- #ifdef DEBUG
- puts(" => l2");
- #endif
- fputnum(l1);
- fread(lb,1,xr*3,e1);
- fread(lb,1,xr*3,e2);
- l1=fgetnum(e1);
- l2=fgetnum(e2);
- } else {
- #ifdef DEBUG
- puts(" => l2");
- #endif
- fputnum(l2);
- fread(lb,1,xr*3,e2);
- l2=fgetnum(e2);
- }
- fwrite(lb,1,xr*3,s);
- }
-
- exit(0);
- }
-